<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            padding-bottom: 800px;
        }
        .box{
            border: 1px solid black;
            padding: 20px;
        }
    </style>
</head>
<body>
    <div id="app" class="box">
        <h4>父组件</h4>
        <comp-one></comp-one>
        <br>
        <comp-two></comp-two>
    </div>

    <script type="text/x-template" id="compOne">
        <div class="box">
            <h4>子组件A</h4>
            <p>msg:{{ msg }}</p>
            <input type="button" value="绑定事件-第一" @click="bindEvent()">
        </div>
    </script>
    <script type="text/x-template" id="compTwo">
        <div class="box">
            <h4>子组件B</h4>
            <p>msg:{{ msg }}</p>
            <input type="button" value="触发事件-第二" @click="emitEvent()">
        </div>
    </script>

    <script type="module"> 
        import { createApp } from "../../assets/vue3/vue.esm-browser.js";
        import mitt from "../../assets/mitt/mitt.mjs";
        // console.log(mitt)
        // 构建事件存储对象
        // const eventBus = mitt();
        // console.log(eventBus);
        // 事件绑定
        // eventBus.on(eventName,callback)  // eventName 自定义事件名 callback 事件回调
        // eventBus.on("updateMsg",function(e){
        //     console.log("自定义updateMsg:的事件",e)
        // })
        // console.log(eventBus);
        // 事件触发
        // eventBus.emit(eventName,event) // eventName 自定义事件名 event 事件源对象
        // eventBus.emit("updateMsg","测试传入的数据")

        const app = createApp({
            data(){
                return {

                }
            }
        });

        app.config.globalProperties.$eventBus = mitt();
        
        // 接收数据组件完成事件定义
        // 传递数据的组件完成事件触发
        app.component("CompOne",{
            template:"#compOne",
            data() {
                return {
                    msg: ""
                }
            },
            methods: {
                bindEvent() {
                    // eventBus.on("updateMsg",(e)=>{
                    //     console.log("自定义updateMsg:的事件",e)
                    //     this.msg = e;
                    // })
                    this.$eventBus.on("updateMsg",(e)=>{
                        console.log("自定义updateMsg:的事件",e)
                        this.msg = e;
                    })
                }
            },
        })
        app.component("CompTwo",{
            template:"#compTwo",
            data() {
                return {
                    msg:"组件B的数据msg"
                }
            },
            methods: {
                emitEvent() {
                    // eventBus.emit("updateMsg",this.msg)
                    this.$eventBus.emit("updateMsg",this.msg)
                }
            },
        })
        
        app.mount("#app");
    </script>
</body>
</html>